package net.hn.hnms.biz.shipped.domain;

import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.*;

import javax.persistence.Table;
import java.io.Serializable;
import java.util.Date;
import java.math.BigDecimal;

/**
 * Author: ly
 * 发运流水表
 */
@Data
@NoArgsConstructor
@ExcelIgnoreUnannotated
@EqualsAndHashCode(callSuper = false)
@Table(name = "transport_delivery_info")
public class TransportDeliveryInfo extends BaseModel implements Serializable {

    @ApiModelProperty(value = "主键ID")
    @TableId(type = IdType.ASSIGN_UUID)
    private String deliveryId;

    @ApiModelProperty(value = "矿名称")
    @Length(max = 100, message = "矿名称长度不能超过100个字符")
    @NotBlank(message = "矿名称不能为空")
    @ExcelProperty("煤矿名称")
    private String mineName;

    @ApiModelProperty(value = "提煤单号")
    @Length(max = 100, message = "提煤单号长度不能超过100个字符")
    @NotBlank(message = "提煤单号不能为空")
    @ExcelProperty("提煤单号")
    private String voucherNo;

    @ApiModelProperty(value = "客户编码")
    @Length(max = 100, message = "客户编码长度不能超过100个字符")
    @NotBlank(message = "客户编码不能为空")
    @ExcelProperty("客户编码")
    private String custId;

    @ApiModelProperty(value = "客户名称")
    @Length(max = 100, message = "客户名称长度不能超过100个字符")
    @NotBlank(message = "客户名称不能为空")
    @ExcelProperty("客户名称")
    private String custName;

    @ApiModelProperty(value = "煤种名称")
    @Length(max = 100, message = "煤种名称长度不能超过100个字符")
    @NotBlank(message = "煤种名称不能为空")
    @ExcelProperty("煤种名称")
    private String coalName;

    @ApiModelProperty(value = "部门名称")
    @Length(max = 100, message = "部门名称长度不能超过100个字符")
    @NotBlank(message = "部门名称不能为空")
    @ExcelProperty("销售部门")
    private String deptName;

    @ApiModelProperty(value = "车牌号")
    @Length(max = 100, message = "车牌号长度不能超过100个字符")
    @NotBlank(message = "车牌号不能为空")
    @ExcelProperty("车牌号")
    private String vehicleNo;

    @ApiModelProperty(value = "司机姓名")
    @Length(max = 100, message = "司机姓名长度不能超过100个字符")
    @NotBlank(message = "司机姓名不能为空")
    @ExcelProperty("司机姓名")
    private String driverName;

    @ApiModelProperty(value = "发货皮重")
    @Digits(integer = 0, fraction = 2, message = "发货皮重格式不正确")
    @DecimalMin(value = "0.00", message = "发货皮重格式不正确")
    @NotNull(message = "发货皮重不能为空")
    @ExcelProperty("发货皮重")
    private BigDecimal sendTare;

    @ApiModelProperty(value = "发货过皮时间")
    @NotNull(message = "发货过皮时间不能为空")
    @ExcelProperty("发货过皮时间")
    private Date sendTareTime;

    @ApiModelProperty(value = "发货毛重")
    @Digits(integer = 0, fraction = 2, message = "发货毛重格式不正确")
    @DecimalMin(value = "0.00", message = "发货毛重格式不正确")
    @NotNull(message = "发货毛重不能为空")
    @ExcelProperty("发货毛重")
    private BigDecimal sendGross;

    @ApiModelProperty(value = "发货过毛时间")
    @JsonFormat(
            pattern = "yyyy-MM-dd HH:mm:ss"
    )
    @NotNull(message = "发货过毛时间不能为空")
    @ExcelProperty("发货过毛时间")
    private Date sendGrossTime;

    @ApiModelProperty(value = "发货净重")
    @Digits(integer = 0, fraction = 2, message = "发货净重格式不正确")
    @DecimalMin(value = "0.00", message = "发货净重格式不正确")
    @NotNull(message = "发货净重不能为空")
    @ExcelProperty("发货净重")
    private BigDecimal sendNet;

    @ApiModelProperty(value = "收货皮重")
    @Digits(integer = 0, fraction = 2, message = "收货皮重格式不正确")
    @DecimalMin(value = "0.00", message = "收货皮重格式不正确")
    @NotNull(message = "收货皮重不能为空")
    @ExcelProperty("收货皮重")
    private BigDecimal receiveTare;

    @ApiModelProperty(value = "收货过皮时间")
    @NotNull(message = "收货过皮时间不能为空")
    @ExcelProperty("收货过皮时间")
    private Date receiveTareTime;

    @ApiModelProperty(value = "收货毛重")
    @Digits(integer = 0, fraction = 2, message = "收货毛重格式不正确")
    @DecimalMin(value = "0.00", message = "收货毛重格式不正确")
    @NotNull(message = "收货毛重不能为空")
    @ExcelProperty("收货毛重")
    private BigDecimal receiveGross;

    @ApiModelProperty(value = "收货毛重时间")
    @NotNull(message = "收货毛重时间不能为空")
    @ExcelProperty("收货毛重时间")
    private Date receiveGrossTime;

    @ApiModelProperty(value = "收货净重")
    @ExcelProperty("收货净重")
    private BigDecimal receiveNet;

    @ApiModelProperty(value = "途损")
    @ExcelProperty("途损")
    private BigDecimal loss;

    @ApiModelProperty(value = "提煤单状态名称")
    @ExcelProperty("提煤单状态名称")
    private String state;

    @ApiModelProperty(value = "业务类型")
    @ExcelProperty("业务类型")
    private String type;

    @ApiModelProperty(value = "结算状态")
    @ExcelProperty("结算状态值")
    @NotEmpty(message = "Field cannot be empty")
    private String settleState;

    @ApiModelProperty(value = "煤种单价")
    @Digits(integer = 0, fraction = 2, message = "煤种单价格式不正确")
    @DecimalMin(value = "0.00", message = "煤种单价格式不正确")
    @NotNull(message = "煤种单价不能为空")
    @ExcelProperty("煤种单价（合同单价）")
    private BigDecimal coalPrice;

    @ApiModelProperty(value = "消费金额")
    @Digits(integer = 0, fraction = 2, message = "消费金额格式不正确")
    @DecimalMin(value = "0.00", message = "消费金额格式不正确")
    @NotNull(message = "消费金额不能为空")
    @ExcelProperty("消费金额")
    private BigDecimal saleAmount;

    @ApiModelProperty(value = "结算单价")
    @Digits(integer = 0, fraction = 2, message = "结算单价格式不正确")
    @DecimalMin(value = "0.00", message = "结算单价格式不正确")
    @NotNull(message = "结算单价不能为空")
    @ExcelProperty("结算单价")
    private BigDecimal settlePrice;

    @ApiModelProperty(value = "收货地址名称")
    @Length(max = 100, message = "收货地址名称长度不能超过100个字符")
    @NotBlank(message = "收货地址名称不能为空")
    @ExcelProperty("收货地址名称")
    private String receiveAddrName;

    @ApiModelProperty(value = "收货单位名称")
    @Length(max = 100, message = "收货单位名称长度不能超过100个字符")
    @NotBlank(message = "收货单位名称不能为空")
    @ExcelProperty("收货单位名称")
    private String receiveCustName;

    @ApiModelProperty(value = "结算时间")
    @NotNull(message = "结算时间不能为空")
    @ExcelProperty("结算时间")
    private Date settleDate;

    @ApiModelProperty(value = "过空班组")
    @Length(max = 100, message = "过空班组长度不能超过100个字符")
    @NotBlank(message = "过空班组不能为空")
    @ExcelProperty("过空班组")
    private String tareTeam;

    @ApiModelProperty(value = "过空司磅员名称")
    @Length(max = 100, message = "过空司磅员名称长度不能超过100个字符")
    @NotBlank(message = "过空司磅员名称不能为空")
    @ExcelProperty("过空司磅员名称")
    private String tareUserName;

    @ApiModelProperty(value = "过重班组")
    @Length(max = 100, message = "过重班组长度不能超过100个字符")
    @NotBlank(message = "过重班组不能为空")
    @ExcelProperty("过重班组")
    private String grossTeam;

    @ApiModelProperty(value = "过重司磅员名称")
    @Length(max = 100, message = "过重司磅员名称长度不能超过100个字符")
    @NotBlank(message = "过重司磅员名称不能为空")
    @ExcelProperty("过重司磅员名称")
    private String grossUserName;

    @ApiModelProperty(value = "是否营业登记")
    private String isReg;

    @ApiModelProperty(value = "收货过空班组")
    @Length(max = 100, message = "收货过空班组长度不能超过100个字符")
    @NotBlank(message = "收货过空班组不能为空")
    @ExcelProperty("收货过空班组")
    private String receiveTareTeam;

    @ApiModelProperty(value = "承运单位id")
    @Length(max = 255, message = "承运单位id长度不能超过255个字符")
    @NotBlank(message = "承运单位id不能为空")
    @ExcelProperty("承运单位id")
    private String carrierCompanyId;

    @ApiModelProperty(value = "承运单位名称")
    @Length(max = 100, message = "承运单位名称长度不能超过100个字符")
    @NotBlank(message = "承运单位名称不能为空")
    @ExcelProperty("承运单位名称")
    private String carrierCompanyName;

    @ApiModelProperty(value = "合同单价")
    @Digits(integer = 0, fraction = 2, message = "合同单价格式不正确")
    @DecimalMin(value = "0.00", message = "合同单价格式不正确")
    @NotNull(message = "合同单价不能为空")
    @ExcelProperty("合同单价")
    private BigDecimal contractPrice;

    @ApiModelProperty(value = "涨吨")
    @ExcelProperty("涨吨")
    private BigDecimal increase;

    @ApiModelProperty(value = "提煤单营业登记状态名称")
    @ExcelProperty("提煤单营业登记状态名称")
    private String isRegName;

    @ApiModelProperty(value = "提煤单状态")
    @ExcelProperty("提煤单状态")
    private String stateName;

    @ApiModelProperty(value = "营业登记人")
    @ExcelProperty(index = 33)
    private String businessEgistrationName;

    @ApiModelProperty(value = "营业登记人1")
    @ExcelProperty(index = 34)
    private String businessEgistrationNameOther;

}









